<?php
class FileHandler {
	const THUMB_WIDTH = 200;
	const THUMB_HEIGHT = 150;

	/**
	 * Ужимает картинки сохраняемого элемента инфоблока. Битрегс не умеет, понимаете ли.
	 * @param  $fields Поля инфоблока,доступные после сохранения
	 * @return void
	 */
	function thumbnails(&$fields) {
		/**
		 * Исходные картинки сохраняются как хэш
		 * $fields['PROPERTY_VALUES'][14]
		 * {
		 * 'n0'=>array (
			'name' => string 'vk2010.png' (length=10)
			'type' => string 'image/png' (length=9)
			'tmp_name' => string '/tmp/phpcNdxSq' (length=14)
			'error' => int 0
			'size' => int 12278
		 * ),
		 * 'n1'=>array (
			'name' => string 'vk2010.png' (length=10)
			'type' => string 'image/png' (length=9)
			'tmp_name' => string '/tmp/phpcNdxSq' (length=14)
			'error' => int 0
			'size' => int 12278
		 * ),
		 * ...
		 * }
		 */
		$pictures = CIBlockElement::GetProperty(
			$fields['IBLOCK_ID'],
			$fields['ID'],
			null,
			null,
			array('CODE' => 'photo')
		);
		while ($row = $pictures->GetNext()) {
			$picSrc = $_SERVER['DOCUMENT_ROOT'] . CFile::GetPath($row['VALUE']);
			$thumbSrc = self::getThumbSrc($picSrc);
			CFile::ResizeImageFile(
				$picSrc,
				$thumbSrc,
				array('width' => self::THUMB_WIDTH, 'height' => self::THUMB_HEIGHT)
			);
		}
	}

	/**
	 * Имя миниатюры из имени исходной картинки. Используется как при сохранении картинки,
	 * так и при выводе.
	 * @static
	 * @param  $fileName Любое имя файла с расширением
	 * @return string
	 */
	public static function getThumbSrc($fileName) {
		$parts = explode('.', strrev($fileName), 2);
		return strrev($parts[1]) . '.thumb.' . strrev($parts[0]);
	}

	public function normalizeName(&$fields){
		
	}
}